#创建 build/ 目录
# 把 keyirq.c 和一个极简 Makefile（只含 obj-m := keyirq.o）复制进去
# 调用内核 make：M=$(PWD)/build
# 内核在 build/ 目录下生成所有中间文件和 .ko
# 把 build/keyirq.ko 复制回当前目录

# 指定架构
ARCH := arm64

# 指定内核源码路径
KERNEL_DIR := /home/alientek/rk3588_linux_sdk/kernel

# 源文件列表（可以添加多个.c文件）
SRC_FILES :=  miscLed.c

# 从源文件名提取模块名（去除.c扩展名）
MOD_NAMES := $(SRC_FILES:.c=)

# 构建目录
BUILD_DIR := build

# 交叉编译工具链
CROSS_COMPILE ?= aarch64-buildroot-linux-gnu-

# 当前目录
PWD := $(shell pwd)

# 默认目标 - 生成所有.ko文件
all: $(addsuffix .ko,$(MOD_NAMES))

# 为每个模块生成.ko文件
$(addsuffix .ko,$(MOD_NAMES)):
	@module_name=$(basename $@); \
	echo "Building $$module_name.ko"; \
	mkdir -p $(BUILD_DIR); \
	cp $$module_name.c $(BUILD_DIR)/; \
	echo "obj-m := $$module_name.o" > $(BUILD_DIR)/Makefile; \
	$(MAKE) -C $(KERNEL_DIR) \
		M=$(PWD)/$(BUILD_DIR) \
		ARCH=$(ARCH) \
		CROSS_COMPILE=$(CROSS_COMPILE) \
		modules; \
	cp $(BUILD_DIR)/$$module_name.ko ./; \
	rm -rf $(BUILD_DIR)

# 批量清理：删除 build/ 和所有.ko文件
clean:
	rm -rf $(BUILD_DIR)
	rm -f $(addsuffix .ko,$(MOD_NAMES))

# 帮助信息
help:
	@echo "Usage:"
	@echo "  make                    - 编译所有驱动，生成对应的.ko文件"
	@echo "  make clean             - 清理 build/ 和所有.ko文件"
	@echo "  make ledDevice.ko       - 只编译ledDevice驱动"
	@echo "  make ledDriver.ko       - 只编译ledDriver驱动"